Collaboration is an essential part of any organisation. Working in a team increases productivity, shares knowledge and stimulates creativity. It also provides a critical environment for the development of ideas and services. With the growth of cheap international communication systems, such as the network of computers and fibre-optic cabling that comprises the Internet, organisations can collaborate on a global scale across different continents and time-zones. Even at a local level, flexible working practices and the near ubiquitous availability of wireless communication systems, mean that team members may collaborate at the same time in diverse geographical locations or at different times in the same office. Such collaboration may also involve a number of users operating on a number of different network devices.
Most forms of modern collaboration involve the editing of electronic files. These files may comprise, amongst others, word processing documents, spreadsheets, databases, multimedia presentations, audio and video content, computer-program code or proprietary file types. A number of approaches have been proposed in the art to enable collaboration on such files.
A first approach uses a single central repository to maintain a master version of a given file or document. Individual users retrieve (or ‘check out’) the latest version from the repository and later save (or ‘commit’) a new copy, including any changes they have made, back to the repository. Well known examples of such arrangements include the Concurrent Versions System (CVS) developed by Richard Grune and Subversion (SVN) developed by CollabNet Incorporated, both of which provide an open source solution to the problem of managing different versions of computer-program code during application development. In certain cases the repository may be provided by a server connected to the Internet. In this case a plurality of client devices may access the repository as an online service to “check-out” and “commit” documents (for example, Microsoft Office Live supplied by Microsoft Corporation).
A similar approach is set out in WO/2005 114467 A2, wherein a remote computer system is provided. The remote computer system acts as a server to a number of workstations and stores a document to be edited as a plurality of linked character objects. Through communication between a workstation and the remote computer system the centrally-stored document may be updated. However, this system suffers from the usual drawbacks associated with a server-centric system as discussed further below.
Document management solutions of this type generally encounter difficulties when more than one user simultaneously edits a document. In such circumstances there may be ‘clashes’ between the edits made by each user: for example, users A and B check out version 1 of a given document; user A then commits version 1.1 with changes; and user B subsequently commits version 1.2 with changes. At this stage, version 1.2 lacks the changes made by user A.
Merge tools have been proposed that work to merge the changes made in different versions, e.g. versions 1.1 and 1.2 above, such that a consolidated version of the document can be produced. These mechanisms are usually associated with the repository approach, but may also be found in freestanding software such as Microsoft Word, also supplied by Microsoft Corporation. The use of merge tools does not necessarily offer sufficient consistency in all circumstances. For example, if the edits made by users A and B are mutually exclusive (for instance, user A deletes a paragraph while user B adds detail to it) there is the potential for simple merge tools to produce incoherent results.
An alternative approach has been suggested whereby all users edit online a document stored on a central server. In such systems, the document is not checked out for local editing. Instead, each user sets up a connection with the central server and any changes are made directly to a master version of the document stored on the server. An example of a technique of this type is Google Documents, provided by Google Incorporated. However, in order to use systems such as these, users must be online in order to access the centrally stored document. Additionally, users must also be online to edit the document. This may cause problems in situations where the connection to the server is prone to interruption, for example when exchanging data from a moving vehicle using wide area cellular telephone networks.
Another alternative approach to the management of a single document by multiple users is desktop sharing. According to this approach, a first user stores a document and is able to allow remote access to their computer by one or more further users, allowing the further users to temporarily control the application that is used to edit the document. This is similar to the central server approach discussed above, with the difference being that a particular user's machine is used as the server. Examples of this approach include Cisco Webex, provided by Cisco Systems Incorporated, and Microsoft SharedView, provided by Microsoft Corporation. This approach, however, does not allow simultaneous editing of the document by more than one user.
Microsoft Corporation also describe a method, system and apparatus for collaboration in EP 1 589 722 A 1. This publication describes a variation of their “OneNote” application. A shared note-taking session is set up between users using a shared session application program interface (API). In this shared session, page synchronization objects are used to synchronize changes applied to respective pages of a note-taking document. A synchronization token is required to make changes to a page synchronization object. While the described method, system and apparatus do address certain problems in real-time collaboration, they are nevertheless inflexible and do not allow for free collaboration. For example, the need for a shared session restricts international collaboration and the need for a synchronization token generates a certain set of problems that are well-documented in the field of ring network topologies.
A further approach that may be implemented on a common network is to adapt existing message passing software operating on the network. For example, one could write a custom formula for each cell in a spreadsheet such as Microsoft Excel, provided by Microsoft Corporation, that invokes an application such as Tibco Rendezvous, provided by Tibco Software Incorporated to publish a piece of information over the network infrastructure. The disadvantages of this approach are two-fold: firstly, there is a lack of control over the publication of changes, such information is simply placed onto the network for retrieval; and secondly, the author has to explicitly state what information within the document is to be shared and specifically configure the document itself (i.e. has to manually configure each cell) to share such information, not only does this create a much larger document, it requires each document to be customised in a manner that takes time and specialist knowledge.
US2004/0088646 A1 extends the message passing method by passing a mobile agent between nodes, i.e. between computers. The mobile agent may be a Java class. The mobile agent, once it has arrived at a node, may check version information so as to lock a document and send the latest version of a document to other nodes. However, this approach not only suffers the disadvantages of message passing but also those of document locking and sharing as discussed above and below. The mobile agent also may present a security risk.
The limitations on the existing document management techniques outlined above mean that users commonly resort to simply serially distributing a document between collaborators. Often this is achieved by attaching the document to an electronic mail message (“email”) addressed to an appropriate user. For example, user A creates version 1.0 and transmits it to user B, who creates version 1.1 and transmits it to user C, and so on. The limitations of this approach are readily apparent: not only is simultaneous editing of the document by more than one user impossible, but users are unable to contribute until it is their turn. Furthermore, the common use of email produces additional problems such as a lack of security and limits on transmitted file size.
Hence, there is a requirement in the art to provide a method and/or a system to enable users to collaborate on a file or document without the problems described above. Such a solution should preferably be easy to use, should enable real-time editing by multiple users and should facilitate, rather than constrain, the collaboration process.
Overview
According to a first aspect of the present invention, there is a computer-implemented method for enabling collaboration in the editing of a file, the method comprising:
detecting changes made to an open copy of the file that is associated with a first client device;
determining whether a connection can be made with one or more further clients devices connected to a network;
when a network connection cannot be made, persisting the detected changes; and,
when a network connection can be made, selectively transmitting the changes across the network to said one or more further clients devices, thereby instructing one or more respective agents to apply said changes to respective copies of said file.
The present invention ensures that all copies of files on a network are synchronized and up to date while still allowing the user to edit the files locally. It does so by allowing change in real time or near real-time through existing applications used to edit the files. This ensures consistency at all times in the changes made to the files, and also allows files to be edited by different applications at each user's machine.
The present invention allows more than one user to simultaneously edit the file without risk of conflict, since each user is able to observe the changes made by others in real time or near real-time.
It is notable that the present invention does not attempt to store a ‘master’ copy of the file at a central location which is updated each time a user saves the file. Nor does the present invention transmit saved and updated versions of the file to each user. Instead, only the changes made are transmitted across the network, and these may be applied separately by agents and file-editing applications used by each user.
Preferably, the method further comprises:
receiving changes from one or more other agents over the network; and applying
the received changes to a copy of the file associated with the first client device.
Preferably, the changes are applied using an application associated with the first client device. The changes applied to a copy of a file may be applied to an open copy of the file.
Preferably, the method further comprises:
receiving notification of a new shared file over the network; and
generating a new copy of the new shared file that is associated with the first client device.
Preferably, persisting changes comprises storingthe detected changes. In certain embodiments, the method may comprise directly apply the changes to the copy of the file without it being open, i.e. without the use of an application.
Preferably, the step of selectively transmitting comprises only transmitting the changes to one or more further client devices connected to the network that are associated with users with whom the file has been shared.
Preferably, a client device is associated with a user through the presence of an agent registered to the user. Preferably, the step of detecting changes further comprises:
loading an appropriate document handler that is adapted to interact with an application being used to edit the file;
wherein the document handler transforms the changes from a format specific to the application to an application-independent format.
Preferably, the step of selectively transmitting comprises:
determining whether a direct connection can be made with a selected client device;
if a direct connection can be made, making said connection; and
if a direct connection cannot be made, making a connection with an intermediate device to route data to the selected client device.
According to a second aspect of the present invention there is provided a computer program product comprising computer executable instructions for carrying out the method described above.
According to a third aspect of the present invention there is provided an agent for enabling collaboration in the editing of a shared file, the agent comprising:
a collaborative event manager to detect changes made to an open copy of the file that is associated with a first client device;
a network manager to determine whether a connection can be made with one or more further clients devices connected to a network; and
an offline manager couplable to the network manager to persist changes detected by the collaborative event manager when a connection cannot be made; wherein the network manager is adapted to selectively transmit the changes across the network to one or more of the said further client devices when a connection can be made, thereby instructing one or more respective agents to apply said changes to respective copies of said file.
The third aspect of the present invention providing the same advantages discussed in relation to the first aspect of the invention.
Preferably, the network manager is adapted to receive changes from one or more other agents over the network relating to the shared file; and the collaborative event manager is adapted to apply said changes to a copy of the file associated with the first client device.
Preferably, the one or more respective agents and/or the collaborative event manager are adapted to apply said changes to an open copy of the appropriate file or files.
Preferably, the collaborative event manager is adapted to apply said changes using an application loaded upon the first client device.
Preferably, the agent further comprises: a file system manager to receive notification of a new shared file from the network manager and generate a copy of said new shared file that is associated with the first client device.
Preferably, the file system manager is adapted to interact with a file system of the first client device.
Preferably, the offline manager is adapted to interact with a file system of the first client device. The offline manager may be adapted to receive changes from the collaborative event manager when the copy of the shared file is not open. In certain embodiments, the offline manager may be adapted to directly apply the changes to the copy of the file without it being open, i.e. without the use of an application.
Preferably, when the client device connects to the network, the network manager is adapted to selectively transmit any changes that were stored by the offline manager.
Preferably, the network manager selectively transmits the changes to one or more further client devices connected to the network that are associated with users with whom the file has been shared.
Preferably, a client device is associated with a user by the presence of an agent registered to the user.
Preferably, the network manager is adapted to: determine whether a direct connection can be made to a selected client device; based on said determination, if a direct connection can be made, make a direct connection; and based on said determination, if a direct connection cannot be made, make a connection with an intermediate device to route data to the selected client device.
Preferably, in any of the above aspects, the changes are made by a first user to a first memory copy of the file, the first memory copy being created for real-time editing by a file-editing application when the first user opens the file. In addition, the one or more further client devices may be associated with one or more respective users sharing the file and the application of the changes may be applied to memory copies of said file by file-editing applications operated by the one or more respective users, said memory copies being created when the one or more respective users open the file.
Preferably, the real-time change component comprises a monitor component that detects changes made to the open copy of the file without modifying said copy of the file.
A router may be provided for enabling connectivity between a plurality of users in the editing of a file, the router comprising:
a receiving device for receiving changes to be applied to a shared file from a first agent across a network, said changes to be applied to a copy of the file associated with a selected client device that is not, at the time of receipt, connected to the network; and
a transmitting device to transmit said changes to the selected client device, thereby instructing a respective second agent to apply said changes to a copy of the file that is associated with the selected client device.
Preferably, the router further comprises: a routing manager for receiving a request from a third agent to connect to a fourth agent across the network, the routing manage being adapted to route data from the third agent to the fourth agent across the network.
Preferably, the first to fourth agents are any agents associated with the plurality of users.